package com.zimmur.service.order;

import java.util.List;
import java.util.Map;

import com.zimmur.model.order.Order;
import com.zimmur.model.order.view.OrderParameter;
import com.zimmur.model.order.view.ReceiveOrderListModel;
import com.zimmur.tools.PageUtil;

/**
 * 订单服务接口
 * @author Administrator
 *
 */
public interface IOrderService {
	/**
	 * 根据订单ID获取订单信息
	 * @param orderId
	 * @return
	 */
	public Order selectByOrderId(long orderId);
	/**
	 * 创建订单
	 * @param model
	 * @param userId 用户ID
	 * @param source 订单来源
	 * 
	 * @return
	 */
	public long createOrder(ReceiveOrderListModel model,long userId,Integer source);
	/**
	 * 更新订单付款状态
	 * @param orderId
	 * @param payMethod 支付方式 微信支付=wxpay 支付宝支付=alipay
	 * @param orderStatus 00=待付款/10=已付款待发货/20=已发货待完成/30=已完成/90=订单取消
	 * @param orderStatusText 订单状态描述
	 * @return
	 */
	public boolean updateOrderStatusByPayNotify(long orderId,String payMethod,String transactonId,double payJe,String oderStatus,String orderStatusText);
	/**
	 * 更新订单状态
	 * @param orderId
	 * @param oderStatus 00=待付款/10=待发货/20=已发货/30=已完成/90=订单取消
	 * @param orderStatusText 订单状态描述
	 * @return
	 */
	public boolean updateOrderStatus(long orderId,String oderStatus,String orderStatusText);
	/**
	 * 超时未支付订单取消
	 * @param dateTime
	 * @return
	 */
	boolean updateOrderStatusToCancelByOrderId(long orderId);
	/**
	 * 获取24小时未支付订单
	 * @param unixTime
	 * @return
	 */
	List<Order> selectListByTimeOut(int unixTime);
	/**
	 * 根据订单ID删除订单
	 * @param orderid
	 * @return
	 */
    int deleteByPrimaryKey(Long orderid);
    /**
     * 修改订单
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(Order record);
    /**
     * 根据订单状态查询我的订单
     * @param orderParameter
     * @return
     */
    PageUtil<Order> selectByOderStatusList(OrderParameter orderParameter);
    /**
     * 根据订单状态和闪创商品状态 查询闪创订单
     * @param orderParameter
     * @return
     */
    PageUtil<Order> selectOrganizationOrder(OrderParameter orderParameter);
    /**
     * 通过商品Id查询
     * @param goodsId
     * @return
     */
    List<Order> selectOrderByGoodsIdAndStatus(long goodsId,String orderStatus);
    /**
     * 通过订单id批量修改订单状态
     * @param orderStatus
     * @param orderStatusText
     * @param orderIds
     * @return
     */
    int updateOrderByOrderIds(String orderStatus,String orderStatusText,List<Long> orderIds);
    /**
     * 分页 查询
     * 查询闪创订单的已退款订单和售后订单
     * 参数：userId，pageBeginNo，pageSize
     * @param orderParameter
     * @return
     */
    List<Long> selectServiceOrderIDByParam(OrderParameter orderParameter);
    /**
     * 统计总数
     * 查询闪创订单的已退款订单和售后订单
     * 参数：userId
     * @param orderParameter
     * @return
     */
    int countServiceOrderIDByParam(OrderParameter orderParameter);
    /**
     * 查询超时未签收订单
     * 发货时间小于time的订单
     * @param time
     * @return
     */
    List<Order> selectOrderByShipDateOut(int time);
	/**
	* <p>Title: selectByOrderDetailIdAndUserId</p>
	* <p>Description:查询订单详情 </p>
	* @param orderId
	* @param userId
	* @return
	*/
	public Order selectByOrderDetailIdAndUserId(Long orderId, Long userId);
    
}
